package com.itheima.reggie.handler;

import com.itheima.reggie.common.CustomException;
import com.itheima.reggie.common.ResultInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//全局异常处理器/统一异常处理器
@RestControllerAdvice
@Slf4j
public class           GlobalExceptionHandler {

    //预期异常处理方法
    @ExceptionHandler(CustomException.class)
    public ResultInfo exceptionHandler(CustomException exception) {
        log.info(exception.getMessage());
        return ResultInfo.error(exception.getMessage());

    }

    //非预期异常处理方法
   @ExceptionHandler(Exception.class )
   public ResultInfo exceptionHandler(Exception e) {
       StackTraceElement ste =e.getStackTrace()[0];
       log.error("======================================================");
       log.info("异常信息："+e.getMessage());
       log.info("异常类："+ste.getClassName());
       log.info("异常类名："+ste.getFileName());
       log.info("异常行号："+ste.getLineNumber());
       log.info("异常方法："+ste.getMethodName());
       log.error("==================================================");
       return ResultInfo.error("对不起，网络问题，请稍后再试");
   }
}
